home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2001 May / SGI Freeware 2001 May - Disc 3.iso / dist / fw_openssl.idb / usr / freeware / include / openssl / rsaref.h.z / rsaref.h
Encoding:
C/C++ Source or Header  |  2001-01-10  |  6.7 KB  |  181 lines

  1. /* rsaref/rsaref.h */
  2. /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  3.  * All rights reserved.
  4.  *
  5.  * This package is an SSL implementation written
  6.  * by Eric Young (eay@cryptsoft.com).
  7.  * The implementation was written so as to conform with Netscapes SSL.
  8.  * 
  9.  * This library is free for commercial and non-commercial use as long as
  10.  * the following conditions are aheared to.  The following conditions
  11.  * apply to all code found in this distribution, be it the RC4, RSA,
  12.  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
  13.  * included with this distribution is covered by the same copyright terms
  14.  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
  15.  * 
  16.  * Copyright remains Eric Young's, and as such any Copyright notices in
  17.  * the code are not to be removed.
  18.  * If this package is used in a product, Eric Young should be given attribution
  19.  * as the author of the parts of the library used.
  20.  * This can be in the form of a textual message at program startup or
  21.  * in documentation (online or textual) provided with the package.
  22.  * 
  23.  * Redistribution and use in source and binary forms, with or without
  24.  * modification, are permitted provided that the following conditions
  25.  * are met:
  26.  * 1. Redistributions of source code must retain the copyright
  27.  *    notice, this list of conditions and the following disclaimer.
  28.  * 2. Redistributions in binary form must reproduce the above copyright
  29.  *    notice, this list of conditions and the following disclaimer in the
  30.  *    documentation and/or other materials provided with the distribution.
  31.  * 3. All advertising materials mentioning features or use of this software
  32.  *    must display the following acknowledgement:
  33.  *    "This product includes cryptographic software written by
  34.  *     Eric Young (eay@cryptsoft.com)"
  35.  *    The word 'cryptographic' can be left out if the rouines from the library
  36.  *    being used are not cryptographic related :-).
  37.  * 4. If you include any Windows specific code (or a derivative thereof) from 
  38.  *    the apps directory (application code) you must include an acknowledgement:
  39.  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
  40.  * 
  41.  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
  42.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  43.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  44.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  45.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  46.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  47.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  48.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  49.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  50.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  51.  * SUCH DAMAGE.
  52.  * 
  53.  * The licence and distribution terms for any publically available version or
  54.  * derivative of this code cannot be changed.  i.e. this code cannot simply be
  55.  * copied and put under another distribution licence
  56.  * [including the GNU Public Licence.]
  57.  */
  58.  
  59. #ifndef HEADER_RSAREF_H
  60. #define HEADER_RSAREF_H
  61.  
  62. #ifndef NO_RSA
  63. #include <openssl/rsa.h>
  64.  
  65. #ifdef __cplusplus
  66. extern "C" {
  67. #endif
  68.  
  69. /* RSAeuro */
  70. /*#define  RSAref_MAX_BITS        2048*/
  71.  
  72. /* RSAref */
  73. #define  RSAref_MAX_BITS        1024
  74.  
  75. #define RSAref_MIN_BITS        508
  76. #define RSAref_MAX_LEN        ((RSAref_MAX_BITS+7)/8)
  77. #define RSAref_MAX_PBITS    (RSAref_MAX_BITS+1)/2
  78. #define RSAref_MAX_PLEN        ((RSAref_MAX_PBITS+7)/8)
  79.  
  80. typedef struct RSArefPublicKey_st
  81.     {
  82.     unsigned int bits;
  83.     unsigned char m[RSAref_MAX_LEN];
  84.     unsigned char e[RSAref_MAX_LEN];
  85.     } RSArefPublicKey;
  86.  
  87. typedef struct RSArefPrivateKey_st
  88.     {
  89.     unsigned int bits;
  90.     unsigned char m[RSAref_MAX_LEN];
  91.     unsigned char e[RSAref_MAX_LEN];
  92.     unsigned char d[RSAref_MAX_LEN];
  93.     unsigned char prime[2][RSAref_MAX_PLEN];/* p & q */
  94.     unsigned char pexp[2][RSAref_MAX_PLEN];    /* dmp1 & dmq1 */
  95.     unsigned char coef[RSAref_MAX_PLEN];    /* iqmp */
  96.     } RSArefPrivateKey;
  97.  
  98. typedef struct RSARandomState_st
  99.     {
  100.     unsigned int needed;
  101.     unsigned char state[16];
  102.     unsigned int outputnum;
  103.     unsigned char output[16];
  104.     } RSARandomState;
  105.  
  106. #define RE_CONTENT_ENCODING 0x0400
  107. #define RE_DATA 0x0401
  108. #define RE_DIGEST_ALGORITHM 0x0402
  109. #define RE_ENCODING 0x0403
  110. #define RE_KEY 0x0404
  111. #define RE_KEY_ENCODING 0x0405
  112. #define RE_LEN 0x0406
  113. #define RE_MODULUS_LEN 0x0407
  114. #define RE_NEED_RANDOM 0x0408
  115. #define RE_PRIVATE_KEY 0x0409
  116. #define RE_PUBLIC_KEY 0x040a
  117. #define RE_SIGNATURE 0x040b
  118. #define RE_SIGNATURE_ENCODING 0x040c
  119. #define RE_ENCRYPTION_ALGORITHM 0x040d
  120.  
  121. int RSAPrivateDecrypt(unsigned char *to, int *outlen, unsigned char *from,
  122.     int len, RSArefPrivateKey *RSAkey);
  123. int RSAPrivateEncrypt(unsigned char *to, int *outlen, unsigned char *from,
  124.     int len, RSArefPrivateKey *RSAkey);
  125. int RSAPublicDecrypt(unsigned char *to, int *outlen, unsigned char *from,
  126.     int len, RSArefPublicKey *RSAkey);
  127. int RSAPublicEncrypt(unsigned char *to, int *outlen, unsigned char *from,
  128.     int len, RSArefPublicKey *RSAkey,RSARandomState *rnd);
  129. int R_RandomInit(RSARandomState *rnd);
  130. int R_GetRandomBytesNeeded(unsigned int *,RSARandomState *rnd);
  131. int R_RandomUpdate(RSARandomState *rnd, unsigned char *data, unsigned int n);
  132. int R_RandomFinal(RSARandomState *rnd);
  133.  
  134. void ERR_load_RSAREF_strings(void );
  135. RSA_METHOD *RSA_PKCS1_RSAref(void );
  136.  
  137. #ifdef  __cplusplus
  138. }
  139. #endif
  140. #endif
  141.  
  142. /* BEGIN ERROR CODES */
  143. /* The following lines are auto generated by the script mkerr.pl. Any changes
  144.  * made after this point may be overwritten when the script is next run.
  145.  */
  146.  
  147. /* Error codes for the RSAREF functions. */
  148.  
  149. /* Function codes. */
  150. #define RSAREF_F_BN_REF_MOD_EXP                 100
  151. #define RSAREF_F_RSAREF_BN2BIN                 101
  152. #define RSAREF_F_RSA_BN2BIN                 102
  153. #define RSAREF_F_RSA_PRIVATE_DECRYPT             103
  154. #define RSAREF_F_RSA_PRIVATE_ENCRYPT             104
  155. #define RSAREF_F_RSA_PUBLIC_DECRYPT             105
  156. #define RSAREF_F_RSA_PUBLIC_ENCRYPT             106
  157. #define RSAREF_F_RSA_REF_BN2BIN                 107
  158. #define RSAREF_F_RSA_REF_MOD_EXP             108
  159. #define RSAREF_F_RSA_REF_PRIVATE_DECRYPT         109
  160. #define RSAREF_F_RSA_REF_PRIVATE_ENCRYPT         110
  161. #define RSAREF_F_RSA_REF_PUBLIC_DECRYPT             111
  162. #define RSAREF_F_RSA_REF_PUBLIC_ENCRYPT             112
  163.  
  164. /* Reason codes. */
  165. #define RSAREF_R_CONTENT_ENCODING             0x0400
  166. #define RSAREF_R_DATA                     0x0401
  167. #define RSAREF_R_DIGEST_ALGORITHM             0x0402
  168. #define RSAREF_R_ENCODING                 0x0403
  169. #define RSAREF_R_ENCRYPTION_ALGORITHM             0x040d
  170. #define RSAREF_R_KEY                     0x0404
  171. #define RSAREF_R_KEY_ENCODING                 0x0405
  172. #define RSAREF_R_LEN                     0x0406
  173. #define RSAREF_R_MODULUS_LEN                 0x0407
  174. #define RSAREF_R_NEED_RANDOM                 0x0408
  175. #define RSAREF_R_PRIVATE_KEY                 0x0409
  176. #define RSAREF_R_PUBLIC_KEY                 0x040a
  177. #define RSAREF_R_SIGNATURE                 0x040b
  178. #define RSAREF_R_SIGNATURE_ENCODING             0x040c
  179.  
  180. #endif
  181.